//
//  main.c
//  c primer plus six
//
//  Created by huanghui on 16/8/7.
//  Copyright © 2016年 huanghui. All rights reserved.
//

// c primer plus 第五版第六章习题

//一次最好只运行一题，不然可能定义的变量重复

#include <stdio.h>

#include <string.h>

#include <math.h>

void c(float f);

const int TWENTY_SIX = 26;

const int EIGHT = 8;

double eight(double one,double two,double worth);

int main(int argc, const char * argv[])
{
//    //第一题:编写一个程序,创建一个具有26个元素的数组，并在其中储存26个字母。并让该程序显示该数组的内容
//    char ch[TWENTY_SIX];
//    
//    printf("请输入26个字母：");
//    
//    for (int i = 0;  i < TWENTY_SIX; i++)
//    {
//        
//        scanf("%c",&ch[i]);
//    }
//    
//    printf("该数组内容为：%s\n",ch);
    
    //第二题：使用嵌套循环产生下列图案
    
//    for (int i = 1; i < 6; i++)
//    {
//        for (int j = 0; j < i; j++)
//        {
//            printf("$");
//        }
//        
//        printf("\n");
//        
//    }
    
    //第三题：使用嵌套循环产生下列图案
    
//    for (char ch = 'F'; ch >= 'A'; ch--)
//    {
//        for (char c = 'F'; c >= ch; c--)
//        {
//            printf("%c",c);
//        }
//        
//        printf("\n");
//    }
    
    //第四题：让程序要求用户输入一个大写字母，使用嵌套循环产生像下面这样的金字塔图案
    
//    char ch4;
//    
//    printf("请输入一个大写字母：");
//    
//    scanf("%c",&ch4);
//    
//    for (char ch = 'A'; ch <= ch4; ch++)
//    {
//        
//        for (int i=0; i < (ch4 - ch);i++ )
//        {
//            printf(" ");
//        }
//        
//        for (char front = 'A'; front <= ch ; front++)
//        {
//            printf("%c",front);
//        }
//        
//        for (char behing = ch - 1; behing >= 'A'; behing--) {
//            printf("%c",behing);
//        }
//        
//        printf("\n");
//    
//    }
    
    //第五题：编写程序打印一个表，表的每一行都给出一个整数，它的平方及立方。要求用户输入他的上限和下限1
//    int  unlimited,lowlimit;
//    
//    printf("请输入表的上限：");
//    
//    scanf("%d",&unlimited);
//    
//    printf("请输入表的下限：");
//    
//    scanf("%d",&lowlimit);
//    
//    for (printf("数    平方    立方\n"); unlimited <= lowlimit; unlimited++)
//    {
//        printf("%d     %d     %d\n",unlimited,unlimited*unlimited,unlimited*unlimited*unlimited);
//        
//        
//    }
    
    //第六题：编写一个程序把一个单词读入一个字符数组，然后反向打印出这个单词
//    
//    char ch[20];
//    
//    printf("请输入一个单词：");
//    
//    scanf("%s",ch);
//    
//    for (size_t length = strlen(ch); 0 < length+1 ; length--) {
//        
//        //正整数不能为零
//        
//        printf("%c",ch[length]);

//          }
    //第七题：编写一个程序，要求输入两个浮点数。然后打印出用两者的差值除以两者的乘值所得的结果。在用户输入非数字之前循环处理每对输入值
    
//    double one,two;
//    
//    printf("请输入两个浮点数:");
//    
//    while (scanf("%lf%lf",&one,&two))
//    {
//        
//        printf("二者的差值除以乘值 ＝ %lf\n",(one-two)/(one*two));
//    }
    
    //第八d题：对练习7进行修改，让它使用一个函数来返回计算值
    
//    double  one,two;
//    
//    printf("请输入两个浮点数:");
//    
//    double worth;
//    
//        while (scanf("%lf%lf",&one,&two))
//        {
//            
//            
//            printf("二者的差值除以乘值 ＝ %lf\n",eight(one, two, worth));
//        }
    
    //第九题：编写一个程序，要求用户输入下限数和一个上限数。然后，依次计算从下限到上限的每一个整数平方的和。最后显示结果。程序将不断提醒用户输入下限数和上限数并显示出答案，直到输入的上限数等于或小于下限数为止
    
//    int  unlimited,lowlimit;
//    
//    printf("Enter lower and upper integer limits :");
//    
//    scanf("%d%d",&unlimited,&lowlimit);
//    
//    while (unlimited < lowlimit)
//    {
//        
//        int worth = 0;
//        
//        printf("the sums of the squares form %d %d",unlimited,lowlimit);
//        
//        for (; unlimited <= lowlimit; unlimited++)
//        {
//            
//            worth = worth + unlimited*unlimited;
//            
//        }
//        
//        printf(" is %d\n",worth);
//        
//        
//        printf("Enter lower and upper integer limits :");
//        
//        scanf("%d%d",&unlimited,&lowlimit);
//
//
//        
//    }

    //第十题：编写一个程序把八个整数打印到一个数组中，然后以相反的顺序打印它们
    
//    int eight[EIGHT];
//    
//    printf("请输入八个整数：");
//    
//    for (int i = 0; i < EIGHT; i++)
//    
//    {
//        scanf("%d",&eight[i]);
//        
//    }
//    
//    for (int i = EIGHT - 1; i >= 0; i--)
//    
//    {
//        printf("%d",eight[i]);
//        
//    }
//    
//    printf("\n");
    
    //第十一题：编写一个程序来计算这两个不断变化的综合，直到某个次数。让用户交互输入这个次数，看看在，20次，100次和500次之后的总和
    
//    double  more,and = 0,plus_minus = 1;
//    
//    int x=0;
//    
//    printf("请输入计算次数：");
//    
//    scanf("%lf",&more);
//    
//    while (x<2) {
//        
//        for (int i = 1; i <= more; i++)
//            
//        {
//            plus_minus = -plus_minus;
//            
//            and = and + (more*plus_minus)/(more+1);
//            
//        }
//        
//        printf("第一个序列的和为：%lf\n",and);
//        
//        for (int i = 1; i <= more; i++)
//            
//        {
//            
//            and = and + more/(more+1);
//            
//        }
//        
//        printf("第二个序列的和为：%lf\n",and);
//        
//        printf("请输入计算次数：");
//        
//        scanf("%lf",&more);
//        
//        x++;
//
//
//    }
    
    //第十二题：编写一个程序，创建一个八个元素的int数组，并且把元素分别设置为2的前八次幂，然后打印出它们的值。使用for循环来设置值，使用 do white循环来打印这些值
    
//    int eight[EIGHT];
//    
//    ;
//    
//    for (int i = 0; i < EIGHT; i++)
//    
//    {
//        eight[i] = pow(2, i);
//        
//    }
//    
//    int x = 0;
//    
//    do
//    {
//        printf("%d\n",eight[x]);
//        
//        x++;
//        
//    } while ( x < EIGHT-1);
    
    
    //第十三题：编写一个程序，创建两个8个元素的double数组，使用一个循环来让用户键入第一个数组的8个元素的值，程序把第二个数组元素设置为第一个数组元素的累积和。
    
//    double one[EIGHT],two[EIGHT],and=0;
//    
//    printf("请输入8个数：");
//    
//    for (int i = 0; i < EIGHT; i++)
//    
//    {
//        scanf("%lf",&one[i]);
//        
//        and = and + one[i];
//        
//        two[i] = and;
//        
//    }
//    
//    for (int i = 0; i < EIGHT; i++)
//    {
//        printf("%.0lf ",one[i]);
//    }
//    
//    printf("\n");
//    
//    for (int i = 0; i < EIGHT; i++)
//    {
//        printf("%.0lf ",two[i]);
//        
//    }
    
    //第十四题：编写一个程序读入一行输入，然后反向打印该行，假设该行不超过255个字符
    
//    char ch[255];
//    
//    printf("请随便输入一行元素，不超过255个:");
//    
//    gets(ch);
//    
//    for (size_t i = strlen(ch) ; i > 0 && i<=255; i--)
//    {
//        printf("%c",ch[i - 1]);
//    }
    
    //第十五题：daphne以百分之十的单利息投资了100美元，deirdre则以每年百分之五的复合利息投资了100元。编写一个程序，计算deirdre需要多少年投资额超过daphne，并显示出那时两人的投资额
    
//    int daphne = 100,deirdre = 100,year = 0;
//    
//    for (; daphne >= deirdre; year++)
//    
//    {
//        
//        daphne = daphne + 10;
//        
//        deirdre = deirdre + deirdre * 0.05;
//        
//    }
//   
//    printf("需要%d年，deirdre投资额超过daphne。那时deirdre投资额为%d,daphne投资额为%d\n",year,deirdre,daphne);
    
    //第十六题：lucky赢了100万。他把它存入一个每年赢的％8的账户。在每年的最后一天，lucky取出10万美元，编写一个程序，计算要多少年chuckie酒会清空他的账户
    
    int lucky = 1000000, year = 0;
    
    for (; lucky>0; year++)
    
    {
        lucky = lucky + lucky * 0.08;
        
        lucky = lucky - 100000;
        
        
    }
    
    printf("%d年chuckie酒会清空他的账户\n",year);
    
}

double eight(double one,double two,double worth)
{
    worth = (one-two)/(one*two);
    
    return worth;

}

